userpasswd = input("请输入用户密码：")
grade = 2
flist = [0,0,0,0]
def Threestr(passwd):    #判断是否包括大小写字母，数字及其他字符中的三种
    for i in passwd:
        if i.isupper():
            flist[0] = 1    #大写字符个数
        elif i.islower():
            flist[1] = 1    #小写字符个数
        elif '0' < i < '9':
            flist[2] = 1    #数字个数
        else:
            flist[3] = 1    #其他符号个数
    if sum(flist) >= 3: return 1    #如过超过三种以上就返回1，否则返回0
    else: return 0
def Substr(passwd):    #判断是否有超过或者等于3的子串重复,如果有重复的返回0，没有重复的子串则返回1
    lenth = len(passwd)
    c = 3    #c为重复子串的可能存在的区间，3<c<lenth//2
    for i in range(lenth):
        if passwd.count(passwd[i:i+c]) > 1:
            return 0
    return 1
if len(userpasswd) > 8:    #如果密码长度大于8，分数+1
    grade += 1
else:
    print("长度小于8,",end = "")
if Threestr(userpasswd):    #如果超过三种以上字符，分数+1
    grade += 1
else:
    print("密码没有由3种以上字符组成,",end = "")
if Substr(userpasswd):    #如果没有重复子串，分数+1
    grade += 1
else:
    print("密码中有超过或等于3的字符重复")
print("密码等级为：%d分"%grade)